/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   11.HZOJ-120.c                                      :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: chen_dl <19967657938@163.com>              +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2025/01/10 14:54:40 by chen_dl           #+#    #+#             */
/*   Updated: 2025/01/10 20:36:53 by chen_dl          ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

/*
题目描述
​ 输入一个日期，判断这个日期是否存在。

​ 1,3,5,7,8,10,12 月有 31 天；

​ 4,6,9,11 月有 30 天；

​ 非闰年的 2 月有 28 天；

​ 闰年的 2 月有 29 天；

​ 非整百年，能被 4
整除的为闰年，整百年，能被400整除的是闰年。

输入
​ 输入三个整数 y,m,d 分别表示年月日 （−10≤y,m,d≤3000）。

输出
​ 如果日期存在输出 YES 否则输出 NO。
*/
#include <stdio.h>

int main() {
    int y, m, d, days;
    scanf("%d%d%d", &y, &m, &d);
    if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
        days = 31;
    else if (m == 4 || m == 6 || m == 9 || m == 11)
        days = 30;
    else
        days = 28 + ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
    if (m <= 0 || m > 12 || d < 1 || d > days)
        printf("NO\n");
    else
        printf("YES\n");
    return 0;
}
